#ifndef TIMER_H
#define TIMER_H
#include <QTimer>
#include <QTime>
#include <QLCDNumber>

/** \class Timer
*
*   \brief Die Klasse erstellt eine digitale Uhr.
*
*           In der Klasse wird die Uhr erstellt und intialisiert. Die Klasse fuehrt auch die Zeitmessungen durch.
*           Die Klasse erbt von Oberklasse QObject.
*/
class Timer : public QObject
{
    Q_OBJECT

public:
    /** \fn Timer()
    *
    *   \brief Konstruktor erstellt Oberflaeche von Timer, eigentlicher Timer und die Uhr.
    *
    *   \param parent ist der Zeiger von Typ QLCDNumber.
    */
    explicit Timer( QLCDNumber* _parent = 0 );


    /** \fn ~Timer()
    *
    *   \brief Destruktor gibt den reservierten Speicher frei.
    */
    ~Timer();


    /** \fn startTimer()
    *
    *   \brief Die oeffentliche Methode startet den Timer.
    *
    *   \return Die Methode hat keinen Rueckgabewert.
    */
    void startTimer();


    /** \fn stopTimer()
    *
    *   \brief Die oeffentliche Methode stoppt den Timer.
    *
    *   \return Die Methode hat keinen Rueckgabewert.
    */
    void stopTimer();


    /** \fn resetTimer()
    *
    *   \brief Die oeffentliche Methode startet den Timer neu.
    *
    *   \return Die Methode hat keinen Rueckgabewert.
    */
    void resetTimer();

private slots:
    /** \fn displayTime()
    *
    *   \brief Die Methode ist dafuer zustaendig, dass die Uhr mit der Oberflaeche auf dem Hauptfenster angezeigt wird.
    *
    *   \return Die Methode hat keinen Rueckgabewert.
    */
    void displayTime();

private:
    QLCDNumber* m_qlcdNumber; //!< Zeiger auf Oberflaeche von Timer

    QTimer*     m_timer;
    QTime*      m_time;
    int         m_secs; //!< fuers Hochzaehlen der Uhr notwendig
};

#endif // TIMER_H
